/**
 * Tencent is pleased to support the open source community by making Polaris available.
 *
 * Copyright (C) 2019 THL A29 Limited, a Tencent company. All rights reserved.
 *
 * Licensed under the BSD 3-Clause License (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * https://opensource.org/licenses/BSD-3-Clause
 *
 * Unless required by applicable law or agreed to in writing, software distributed
 * under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
 * CONDITIONS OF ANY KIND, either express or implied. See the License for the
 * specific language governing permissions and limitations under the License.
 */

package swagger

import "net/http"

type OpenAPI struct {
	Paths map[string]*Path `json:"paths"`
}

type Path struct {
	Get    *MethodInfo `json:"get"`
	Post   *MethodInfo `json:"post"`
	Put    *MethodInfo `json:"put"`
	Delete *MethodInfo `json:"delete"`
}

func (p *Path) GetMethod() (string, *MethodInfo) {
	if p.Get != nil {
		return http.MethodGet, p.Get
	}
	if p.Post != nil {
		return http.MethodPost, p.Post
	}
	if p.Put != nil {
		return http.MethodPut, p.Put
	}
	if p.Delete != nil {
		return http.MethodDelete, p.Delete
	}

	return "", nil
}

type MethodInfo struct {
	Consumes    []string `json:"consumes"`
	Produces    []string `json:"produces"`
	Tags        []string `json:"tags"`
	Summary     string   `json:"summary"`
	OperationID string   `json:"operationId"`
}
